iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
0
Mobile Development

iOS Developer Learning Android系列 第 5

iOS Developer Learning Android. Lesson 05 - Activity (你有聽說過啟動模式嗎?)

  • 分享至 

  • xImage
  •  

啟動模式

在Android若有多個Activity時,是會放在一個叫做Task的Stack結構裡。
以前如果我們present或pushVC,一定是new一個新的出來,然而Android有所謂的launchMode。⚠️⚠️⚠️
它是Activity的屬性,在AndroidManifest設定後,可以指定切換Activity時的四種行為。
如下簡單定義:

  1. Standard
    預設值,不管怎樣都一定產生一個新的Activity出來。
  2. Single Top
    如果要去的Activity已經在Task的Top(就是Current Activity)的話,就直接拿來用,不然的話才new。
    適用情境:像是點推播要跳的Activity剛好就是現在在用的Activity,就不用再蓋一個一樣的Activity上去(因為這樣按back之後還是自己,很奇怪)。
  3. Single Task
    不管怎樣該Task只有一個Activity,如果Task已存在就pop回去,中間的Activity就都出棧。☘️☘️☘️有點像popToRootViewController的感覺。
  4. Single Instance
    比照Single Task,有就pop,沒有才new,但會new在另一條Task,適用情境像是App間啟動的Activity。

另外,除了在AndroidManifest中設定,也可以在startActivity傳入想要的mode:

  • FLAG_ACTIVITY_NEW_TASK = Single Task
  • FLAG_ACTIVITY_SINGLE_TOP = Single Top
  • FLAG_ACTIVITY_CLEAR_TOP = 第五種:有研究再來補充了...

接下來會參考網路上的文章做點修改去實作(就是參考資料裡的最後一個連結)。
四種按鈕會對應四種不同的mode,畫面會顯示Activity跟Task,藉此得知有沒有new出新的Activity。大家可以去看Code裡面的Lesson03Activity trytry看。

  • 如圖有四種模式
  • 第一種模式的Activity記憶體位置是8676d34
  • 再點了之後又new一個新的Activity出來(ceb8630)
  • 第二種模式,自己已經在最上面了,所以再按按鈕不會有效果
  • 第三種模式,如果曾出現就回到過去

  • 第四種模式,開一條新的Task(原本是183,現在是184)

    如果程式碼裡面出現大量的複製貼上
    一定是Demo才偷懶,平常工作絕對不是這樣子

畫面方向

也是在AndroidManifest裡面設定screenOrientation,除了landscape跟portrait還有超多種,請大家再自己去試試了(再度不負責任)。

參考資料

今天的範例程式

可以去 https://github.com/mark33699/IDLA 看一下順便給顆⭐️


如果你喜歡我的影片別忘了按讚分享加訂閱,開啟紅色的小鈴鐺,我們明天見~


上一篇
iOS Developer Learning Android. Lesson 04 - Activity (了解祂的生老病死)
下一篇
iOS Developer Learning Android. Lesson 06 - 如何製作畫面 (羨慕SwiftUI的Preview嗎?)
系列文
iOS Developer Learning Android30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言